package vars

import (
	"database/sql/driver"
	"fmt"
)

type Enum string

// Value 实现 driver.Valuer 接口，入库转换
func (e Enum) Value() (driver.Value, error) {
	return string(e), nil
}

// Scan 实现 sql.Scanner 接口，出库转换
func (e *Enum) Scan(v interface{}) error {
	value, ok := v.(string)
	if ok {
		*e = Enum(value)
		return nil
	}
	return nil
}

func (e *Enum) UnmarshalJSON(data []byte) (err error) {
	*e = Enum(data)
	return
}

func (e Enum) MarshalJSON() ([]byte, error) {
	return []byte(fmt.Sprintf("\"%s\"", e)), nil
}
